package com.mmy.dao.constzone;

import java.util.List;
import java.util.Map;

import javax.transaction.Transactional;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import com.mmy.domain.constzone.TConstZone;
import com.mmy.pojo.ConstZone;

/**
 * 类的介绍：dao层
 *
 * @author
 * @date 创建日期
 * @version 1.0
 */

public interface TConstZoneRepository extends JpaRepository<TConstZone, Integer>, JpaSpecificationExecutor<TConstZone> {

	/**
	 * 查询所有省
	 *
	 * @author 创建人 hanxl 整理 原尚主亮写
	 * @date 创建日期 2020.10.29
	 * 
	 */
	@Query(value = "Select * from tConstZone where iZoneType = 3", nativeQuery = true)
	List<TConstZone> findAllProvince();

	/**
	 * 查询所有市
	 *
	 * @author 创建人 hanxl 整理 原尚主亮写
	 * @date 创建日期 2020.10.29
	 * 
	 */
	@Query(value = "Select * from tConstZone where iZoneType = 4", nativeQuery = true)
	List<TConstZone> findAllCity();

	/**
	 * 查询所有区
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 * 
	 */
	@Query(value = "Select * from tConstZone where iZoneType = 5", nativeQuery = true)
	List<TConstZone> findAllDistrict();
	
	/**
	 * 查找该id的国家
	 *
	 * @author 创建人 liys 整理
	 * @date 创建日期 2021.03.25
	 * 
	 */
	@Query(value = "Select * from tConstZone where iZoneID = :iZoneID", nativeQuery = true)
	TConstZone findCountry(@Param("iZoneID") int iZoneID);
	
	/**
	 * 查找该id的省
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 * 
	 */
	@Query(value = "Select * from tConstZone where left(:iZoneID,2) =left(iZoneID,2) and iZoneType = 3", nativeQuery = true)
	TConstZone findProvince(@Param("iZoneID") int iZoneID);

	/**
	 * 查找该id的市 用于前台招标显示 查询登陆人所属公司所在的市
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 * 
	 */
	@Query(value = "Select * from tConstZone where left(:iZoneID,4) =left(iZoneID,4) and iZoneType = 4", nativeQuery = true)
	TConstZone findCity(@Param("iZoneID") int iZoneID);

	/**
	 * 查找该id的省str
	 *
	 * @author liys
	 * @date 创建日期 2020.12.18
	 * 
	 */
	@Query(value = "Select cZoneName from tConstZone where left(:iZoneID,2) =left(iZoneID,2) and iZoneType = 3", nativeQuery = true)
	String findProvinceStr(@Param("iZoneID") int iZoneID);

	/**
	 * 查找该id的市str
	 *
	 * @author 创建人 liys
	 * @date 创建日期 2020.12.18
	 * 
	 */
	@Query(value = "Select cZoneName from tConstZone where left(:iZoneID,4) =left(iZoneID,4) and iZoneType = 4", nativeQuery = true)
	String findCityStr(@Param("iZoneID") int iZoneID);

	/**
	 * 查找该id的区str
	 *
	 * @author 创建人 liys
	 * @date 创建日期 2021.01.27
	 * 
	 */
	@Query(value = "Select cZoneName from tConstZone where iZoneID = :iZoneID and iZoneType = 5 ", nativeQuery = true)
	String findDistrictStr(@Param("iZoneID") int iZoneID);

	/**
	 * 查找该id的省
	 *
	 * @author liys
	 * @date 创建日期 2020.12.18
	 * 
	 */
	@Query(value = "Select iZoneID,cZoneName from tConstZone where left(:iZoneID,2) =left(iZoneID,2) and iZoneType = 3", nativeQuery = true)
	Map<String, Object> findProvinceMap(@Param("iZoneID") int iZoneID);

	/**
	 * 查找该id的市
	 *
	 * @author 创建人 liys
	 * @date 创建日期 2020.12.18
	 * 
	 */
	@Query(value = "Select iZoneID,cZoneName from tConstZone where left(:iZoneID,4) =left(iZoneID,4) and iZoneType = 4", nativeQuery = true)
	Map<String, Object> findCityMap(@Param("iZoneID") int iZoneID);

	/**
	 * 查找该id的区
	 *
	 * @author 创建人 liys
	 * @date 创建日期 2020.12.18
	 * 
	 */
	@Query(value = "Select iZoneID,cZoneName from tConstZone where iZoneID=?1", nativeQuery = true)
	Map<String, Object> findDistrictMap(int iZoneID);

	/**
	 * 查找该id所在省的所有市
	 *
	 * @author 创建人 shangzl 整理人hanxl
	 * @date 创建日期 修改人2021.01.14
	 * 
	 */
	@Query(value = "Select * from tConstZone where left(:zoneID,2) =left(iZoneID,2) and iZoneType = 4", nativeQuery = true)
	List<TConstZone> findCities(@Param("zoneID") int zoneID);

	/**
	 * 查找该id所在市的所有区
	 *
	 * @author 创建人 lys
	 * @date 创建日期 2021.01.22
	 * 
	 */
	@Query(value = "Select * from tConstZone where left(:zoneID,4) = left(iZoneID,4) and iZoneType = 5", nativeQuery = true)
	List<TConstZone> findDistricts(@Param("zoneID") int zoneID);

	/**
	 * 通过市的名字查询市的信息 前台景区菜单显示用到
	 *
	 * @author 创建人hanxl
	 * @date 创建日期 2021.01.12
	 * 
	 */
	@Query(value = "Select * from tConstZone where cZoneName like %?1% and iZoneType = 4", nativeQuery = true)
	TConstZone getZoneID(String strCityName);

	/**
	 * 通过ID查询 前台景区菜单首页搜索用到
	 *
	 * @author 创建人hanxl
	 * @date 创建日期 2021.01.13
	 * 
	 */
	@Query(value = "Select * from tConstZone where iZoneID=:iZoneID ", nativeQuery = true)
	TConstZone findByZoneID(@Param("iZoneID") int iZoneID);

	/**
	 * 获取该ID的洲
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 * 
	 */
	@Query(value = "Select * from tConstZone where left(:zoneID,3) =left(iZoneID,3) and iZoneType = 1", nativeQuery = true)
	TConstZone findContinent(@Param("zoneID") int zoneID);

	/**
	 * 查询ID对应的所有国家 机场修改用到
	 *
	 * @author 创建人 hanxl 整理
	 * @date 创建日期 2020.10.29
	 * 
	 */
	@Query(value = "Select * from tConstZone where left(:zoneID,3) =left(iZoneID,3) and iZoneType = 2", nativeQuery = true)
	List<TConstZone> findCountriess(@Param("zoneID") int zoneID);

//	szl查找所有洲
	@Query(value = "Select * from tConstZone where iZoneType = 1", nativeQuery = true)
	List<TConstZone> findContinents();

//	szl查找所有省
	@Query(value = "Select * from tConstZone where iZoneType = 3", nativeQuery = true)
	List<TConstZone> findProvince();

	/**
	 * 通过ID查询 前台酒店菜单首页搜索用到
	 *
	 * @author 创建人shangzl 修改人hanxl
	 * @date 创建日期 修改时间2021.03.02
	 * 
	 */
	@Query(value = "Select * from tConstZone where left(:zoneID,4) =left(iZoneID,4) and iZoneType = 5", nativeQuery = true)
	List<TConstZone> findAreas(@Param("zoneID") int zoneID);

	/* 获得所有洲际区域 */
	@Transactional
	@Modifying
	@Query(value = "Select * from tConstZone where iZoneType =1", nativeQuery = true)
	List<TConstZone> findAllContinents();

//	szl查找所有国家
	@Query(value = "Select * from tConstZone where iZoneType = 2", nativeQuery = true)
	List<TConstZone> findAllCountriess();

	/**
	 * 查找所有洲
	 *
	 * @author 创建人hanxl
	 * @date 创建日期2021.03.17
	 * 
	 */

	@Query(value = "Select * from tConstZone where iZoneType = 1", nativeQuery = true)
	List<TConstZone> findAllContinent();

	/**
	 * 新三级联动--查询所有省
	 *
	 * @author liys
	 * @date 创建日期 2021.02.09
	 * 
	 */
	@Query(value = "Select iZoneID,cZoneName from tConstZone where iZoneType = 3", nativeQuery = true)
	List<Map<String, Object>> getAllProvince();
	
	@Query(value = "Select iZoneID as value,cZoneName as label from tConstZone where iZoneType = 3", nativeQuery = true)
	List<ConstZone> getAllP();

	/**
	 * 新三级联动--查询省的所有市
	 *
	 * @author 创建人liys
	 * @date 创建日期 2021.02.09
	 * 
	 */
	@Query(value = "Select iZoneID,cZoneName from tConstZone where left(:zoneID,2) =left(iZoneID,2) and iZoneType = 4", nativeQuery = true)
	List<Map<String, Object>> getCities(@Param("zoneID") int zoneID);
	
	@Query(value = "Select iZoneID as value,cZoneName as label from tConstZone where left(:zoneID,2) =left(iZoneID,2) and iZoneType = 4", nativeQuery = true)
	List<ConstZone> getC(@Param("zoneID") int zoneID);
	
	/**
	 * 新三级联动--查询市的所有区
	 *
	 * @author liys
	 * @date 创建日期 2021.02.09
	 * 
	 */
	@Query(value = "Select iZoneID,cZoneName from tConstZone where left(:zoneID,4) =left(iZoneID,4) and iZoneType = 5", nativeQuery = true)
	List<Map<String, Object>> getAreas(@Param("zoneID") int zoneID);
	
	@Query(value = "Select iZoneID as value,cZoneName as label from tConstZone where left(:zoneID,4) =left(iZoneID,4) and iZoneType = 5", nativeQuery = true)
	List<ConstZone> getA(@Param("zoneID") int zoneID);

	/**
	 * 通过市的名字查询市的信息 前台首页旅游线路显示用到
	 *
	 * @author 创建人hanxl
	 * @date 创建日期 2021.02.23
	 * 
	 */
	@Query(value = "Select * from tConstZone where cZoneName=?1 and iZoneType =4", nativeQuery = true)
	TConstZone getAreaByZoneName(String strCityName);
	
	
}
